home *** CD-ROM | disk | FTP | other *** search
/ MacTech 1 to 12 / MacTech-vol-1-12.toast / Source / develop™ Technical Journal / develop Issue 27 code / 3D_Game_Controls.sit / 3D Game Controls / Source / camera.c < prev    next >
MacBinary  |  1996-06-30  |  11.4 KB  |  [TEXT/MPCC]

open in: MacOS 8.1     |     Win98     |     DOS

browse contents    |     view JSON data     |     view as text


This file was processed as: MacBinary (archive/macBinary).

ConfidenceProgramDetectionMatch TypeSupport
66% dexvert Compact Compressed (Unix) (archive/compact) ext Supported
10% dexvert MacBinary (archive/macBinary) fallback Supported
1% dexvert Text File (text/txt) fallback Supported
100% file MacBinary II, inited, Sun Jun 30 00:06:04 1996, modified Sun Jun 30 00:06:04 1996, creator 'MPCC', type ASCII, 10995 bytes "camera.c" , at 0x2b73 410 bytes resource default (weak)
99% file data default
74% TrID Macintosh plain text (MacBinary) default
25% TrID MacBinary 2 default (weak)
100% siegfried fmt/1762 MacBinary (II) default
100% lsar MacBinary default


id metadata
keyvalue
macFileType[TEXT]
macFileCreator[MPCC]



hex view
+--------+-------------------------+-------------------------+--------+--------+
|00000000| 00 08 63 61 6d 65 72 61 | 2e 63 00 00 00 00 00 00 |..camera|.c......|
|00000010| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000020| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000030| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000040| 00 54 45 58 54 4d 50 43 | 43 01 00 00 00 00 00 00 |.TEXTMPC|C.......|
|00000050| 00 00 00 00 00 2a f3 00 | 00 01 9a ad fb ad ac ad |.....*..|........|
|00000060| fb ad ac 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000070| 00 00 00 00 00 00 00 00 | 00 00 81 81 20 eb 00 00 |........|.... ...|
|00000080| 2f 2f 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |//------|--------|
|00000090| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000000a0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000000b0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000000c0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000000d0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 0d 2f |--------|------./|
|000000e0| 2f 20 20 43 61 6d 65 72 | 61 20 46 75 6e 63 74 69 |/ Camer|a Functi|
|000000f0| 6f 6e 73 0d 2f 2f 0d 2f | 2f 20 20 20 20 20 20 62 |ons.//./|/ b|
|00000100| 79 20 50 68 69 6c 69 70 | 20 4d 63 42 72 69 64 65 |y Philip| McBride|
|00000110| 0d 2f 2f 0d 2f 2f 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |.//.//--|--------|
|00000120| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000130| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000140| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000150| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000160| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000170| 2d 2d 0d 0d 0d 23 69 6e | 63 6c 75 64 65 20 3c 46 |--...#in|clude <F|
|00000180| 69 78 4d 61 74 68 2e 68 | 3e 0d 23 69 6e 63 6c 75 |ixMath.h|>.#inclu|
|00000190| 64 65 20 22 47 61 6d 65 | 43 6f 6e 74 72 6f 6c 73 |de "Game|Controls|
|000001a0| 2e 68 22 0d 23 69 6e 63 | 6c 75 64 65 20 22 65 78 |.h".#inc|lude "ex|
|000001b0| 74 65 72 6e 2e 68 22 0d | 23 69 6e 63 6c 75 64 65 |tern.h".|#include|
|000001c0| 20 22 63 61 6d 65 72 61 | 2e 68 22 0d 0d 2f 2f 2d | "camera|.h"..//-|
|000001d0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000001e0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000001f0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000200| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000210| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000220| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 0d 2f 2f 20 20 |--------|---.// |
|00000230| 43 72 65 61 74 65 20 61 | 20 43 61 6d 65 72 61 20 |Create a| Camera |
|00000240| 28 77 69 74 68 20 64 65 | 66 61 75 6c 74 20 73 65 |(with de|fault se|
|00000250| 74 74 69 6e 67 73 29 20 | 2d 2d 20 75 73 65 64 20 |ttings) |-- used |
|00000260| 69 66 20 6e 6f 20 63 61 | 6d 65 72 61 20 69 6e 63 |if no ca|mera inc|
|00000270| 6c 75 64 65 64 20 69 6e | 20 66 69 6c 65 0d 2f 2f |luded in| file.//|
|00000280| 0d 54 51 33 43 61 6d 65 | 72 61 4f 62 6a 65 63 74 |.TQ3Came|raObject|
|00000290| 20 4d 79 4e 65 77 43 61 | 6d 65 72 61 28 43 57 69 | MyNewCa|mera(CWi|
|000002a0| 6e 64 6f 77 50 74 72 20 | 74 68 65 57 69 6e 64 6f |ndowPtr |theWindo|
|000002b0| 77 29 0d 7b 0d 09 54 51 | 33 56 69 65 77 41 6e 67 |w).{..TQ|3ViewAng|
|000002c0| 6c 65 41 73 70 65 63 74 | 43 61 6d 65 72 61 44 61 |leAspect|CameraDa|
|000002d0| 74 61 09 70 65 72 73 70 | 65 63 74 69 76 65 44 61 |ta.persp|ectiveDa|
|000002e0| 74 61 3b 0d 09 54 51 33 | 43 61 6d 65 72 61 4f 62 |ta;..TQ3|CameraOb|
|000002f0| 6a 65 63 74 09 09 09 09 | 09 63 61 6d 65 72 61 3b |ject....|.camera;|
|00000300| 0d 09 66 6c 6f 61 74 20 | 09 09 09 09 09 09 09 66 |..float |.......f|
|00000310| 69 65 6c 64 4f 66 56 69 | 65 77 20 3d 20 2e 35 30 |ieldOfVi|ew = .50|
|00000320| 3b 0d 09 54 51 33 53 74 | 61 74 75 73 09 09 09 09 |;..TQ3St|atus....|
|00000330| 09 09 72 65 74 75 72 6e | 56 61 6c 20 3d 20 6b 51 |..return|Val = kQ|
|00000340| 33 46 61 69 6c 75 72 65 | 20 3b 0d 0d 09 2f 2f 20 |3Failure| ;...// |
|00000350| 41 73 73 69 67 6e 20 64 | 65 66 61 75 6c 74 20 70 |Assign d|efault p|
|00000360| 6c 61 63 65 6d 65 6e 74 | 20 61 6e 64 20 72 61 6e |lacement| and ran|
|00000370| 67 65 0d 09 70 65 72 73 | 70 65 63 74 69 76 65 44 |ge..pers|pectiveD|
|00000380| 61 74 61 2e 63 61 6d 65 | 72 61 44 61 74 61 2e 70 |ata.came|raData.p|
|00000390| 6c 61 63 65 6d 65 6e 74 | 2e 63 61 6d 65 72 61 4c |lacement|.cameraL|
|000003a0| 6f 63 61 74 69 6f 6e 20 | 09 3d 20 6b 4d 79 44 65 |ocation |.= kMyDe|
|000003b0| 66 61 75 6c 74 46 72 6f | 6d 3b 0d 09 70 65 72 73 |faultFro|m;..pers|
|000003c0| 70 65 63 74 69 76 65 44 | 61 74 61 2e 63 61 6d 65 |pectiveD|ata.came|
|000003d0| 72 61 44 61 74 61 2e 70 | 6c 61 63 65 6d 65 6e 74 |raData.p|lacement|
|000003e0| 2e 70 6f 69 6e 74 4f 66 | 49 6e 74 65 72 65 73 74 |.pointOf|Interest|
|000003f0| 20 09 3d 20 6b 4d 79 44 | 65 66 61 75 6c 74 54 6f | .= kMyD|efaultTo|
|00000400| 3b 0d 09 70 65 72 73 70 | 65 63 74 69 76 65 44 61 |;..persp|ectiveDa|
|00000410| 74 61 2e 63 61 6d 65 72 | 61 44 61 74 61 2e 70 6c |ta.camer|aData.pl|
|00000420| 61 63 65 6d 65 6e 74 2e | 75 70 56 65 63 74 6f 72 |acement.|upVector|
|00000430| 20 09 09 09 3d 20 6b 4d | 79 44 65 66 61 75 6c 74 | ...= kM|yDefault|
|00000440| 55 70 3b 0d 09 70 65 72 | 73 70 65 63 74 69 76 65 |Up;..per|spective|
|00000450| 44 61 74 61 2e 63 61 6d | 65 72 61 44 61 74 61 2e |Data.cam|eraData.|
|00000460| 72 61 6e 67 65 2e 68 69 | 74 68 65 72 09 3d 20 6b |range.hi|ther.= k|
|00000470| 4d 79 44 65 66 61 75 6c | 74 48 69 74 68 65 72 3b |MyDefaul|tHither;|
|00000480| 0d 09 70 65 72 73 70 65 | 63 74 69 76 65 44 61 74 |..perspe|ctiveDat|
|00000490| 61 2e 63 61 6d 65 72 61 | 44 61 74 61 2e 72 61 6e |a.camera|Data.ran|
|000004a0| 67 65 2e 79 6f 6e 20 09 | 3d 20 6b 4d 79 44 65 66 |ge.yon .|= kMyDef|
|000004b0| 61 75 6c 74 59 6f 6e 3b | 0d 0d 09 2f 2f 20 41 73 |aultYon;|...// As|
|000004c0| 73 69 67 6e 20 73 74 61 | 6e 64 61 72 64 20 76 69 |sign sta|ndard vi|
|000004d0| 65 77 70 6f 72 74 0d 09 | 70 65 72 73 70 65 63 74 |ewport..|perspect|
|000004e0| 69 76 65 44 61 74 61 2e | 63 61 6d 65 72 61 44 61 |iveData.|cameraDa|
|000004f0| 74 61 2e 76 69 65 77 50 | 6f 72 74 2e 6f 72 69 67 |ta.viewP|ort.orig|
|00000500| 69 6e 2e 78 20 3d 20 2d | 31 2e 30 3b 0d 09 70 65 |in.x = -|1.0;..pe|
|00000510| 72 73 70 65 63 74 69 76 | 65 44 61 74 61 2e 63 61 |rspectiv|eData.ca|
|00000520| 6d 65 72 61 44 61 74 61 | 2e 76 69 65 77 50 6f 72 |meraData|.viewPor|
|00000530| 74 2e 6f 72 69 67 69 6e | 2e 79 20 3d 20 31 2e 30 |t.origin|.y = 1.0|
|00000540| 3b 0d 09 70 65 72 73 70 | 65 63 74 69 76 65 44 61 |;..persp|ectiveDa|
|00000550| 74 61 2e 63 61 6d 65 72 | 61 44 61 74 61 2e 76 69 |ta.camer|aData.vi|
|00000560| 65 77 50 6f 72 74 2e 77 | 69 64 74 68 20 3d 20 32 |ewPort.w|idth = 2|
|00000570| 2e 30 3b 0d 09 70 65 72 | 73 70 65 63 74 69 76 65 |.0;..per|spective|
|00000580| 44 61 74 61 2e 63 61 6d | 65 72 61 44 61 74 61 2e |Data.cam|eraData.|
|00000590| 76 69 65 77 50 6f 72 74 | 2e 68 65 69 67 68 74 20 |viewPort|.height |
|000005a0| 3d 20 32 2e 30 3b 0d 09 | 0d 09 70 65 72 73 70 65 |= 2.0;..|..perspe|
|000005b0| 63 74 69 76 65 44 61 74 | 61 2e 66 6f 76 09 09 09 |ctiveDat|a.fov...|
|000005c0| 09 3d 20 66 69 65 6c 64 | 4f 66 56 69 65 77 3b 0d |.= field|OfView;.|
|000005d0| 09 70 65 72 73 70 65 63 | 74 69 76 65 44 61 74 61 |.perspec|tiveData|
|000005e0| 2e 61 73 70 65 63 74 52 | 61 74 69 6f 58 54 6f 59 |.aspectR|atioXToY|
|000005f0| 09 3d 0d 09 09 28 66 6c | 6f 61 74 29 20 28 74 68 |.=...(fl|oat) (th|
|00000600| 65 57 69 6e 64 6f 77 2d | 3e 70 6f 72 74 52 65 63 |eWindow-|>portRec|
|00000610| 74 2e 72 69 67 68 74 20 | 2d 20 74 68 65 57 69 6e |t.right |- theWin|
|00000620| 64 6f 77 2d 3e 70 6f 72 | 74 52 65 63 74 2e 6c 65 |dow->por|tRect.le|
|00000630| 66 74 29 20 2f 20 0d 09 | 09 28 66 6c 6f 61 74 29 |ft) / ..|.(float)|
|00000640| 20 28 74 68 65 57 69 6e | 64 6f 77 2d 3e 70 6f 72 | (theWin|dow->por|
|00000650| 74 52 65 63 74 2e 62 6f | 74 74 6f 6d 20 2d 20 74 |tRect.bo|ttom - t|
|00000660| 68 65 57 69 6e 64 6f 77 | 2d 3e 70 6f 72 74 52 65 |heWindow|->portRe|
|00000670| 63 74 2e 74 6f 70 29 3b | 0d 09 09 0d 09 63 61 6d |ct.top);|.....cam|
|00000680| 65 72 61 20 3d 20 51 33 | 56 69 65 77 41 6e 67 6c |era = Q3|ViewAngl|
|00000690| 65 41 73 70 65 63 74 43 | 61 6d 65 72 61 5f 4e 65 |eAspectC|amera_Ne|
|000006a0| 77 28 26 70 65 72 73 70 | 65 63 74 69 76 65 44 61 |w(&persp|ectiveDa|
|000006b0| 74 61 29 3b 0d 09 0d 09 | 72 65 74 75 72 6e 20 63 |ta);....|return c|
|000006c0| 61 6d 65 72 61 20 3b 0d | 7d 0d 0d 2f 2f 2d 2d 2d |amera ;.|}..//---|
|000006d0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000006e0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000006f0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000700| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000710| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000720| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 0d 2f 2f 20 20 47 65 |--------|-.// Ge|
|00000730| 74 20 61 20 4d 6f 64 65 | 6c 27 73 20 42 6f 75 6e |t a Mode|l's Boun|
|00000740| 64 69 6e 67 20 42 6f 78 | 0d 2f 2f 0d 76 6f 69 64 |ding Box|.//.void|
|00000750| 20 4d 79 47 65 74 42 6f | 75 6e 64 69 6e 67 42 6f | MyGetBo|undingBo|
|00000760| 78 28 44 6f 63 75 6d 65 | 6e 74 50 74 72 20 74 68 |x(Docume|ntPtr th|
|00000770| 65 44 6f 63 75 6d 65 6e | 74 2c 20 54 51 33 47 72 |eDocumen|t, TQ3Gr|
|00000780| 6f 75 70 4f 62 6a 65 63 | 74 20 6d 61 69 6e 47 72 |oupObjec|t mainGr|
|00000790| 6f 75 70 2c 20 54 51 33 | 42 6f 75 6e 64 69 6e 67 |oup, TQ3|Bounding|
|000007a0| 42 6f 78 20 2a 76 69 65 | 77 42 42 6f 78 29 0d 7b |Box *vie|wBBox).{|
|000007b0| 0d 09 54 51 33 53 74 61 | 74 75 73 09 09 09 09 09 |..TQ3Sta|tus.....|
|000007c0| 73 74 61 74 75 73 3b 0d | 09 54 51 33 56 69 65 77 |status;.|.TQ3View|
|000007d0| 4f 62 6a 65 63 74 20 09 | 09 09 09 76 69 65 77 4f |Object .|...viewO|
|000007e0| 62 6a 65 63 74 20 3d 20 | 74 68 65 44 6f 63 75 6d |bject = |theDocum|
|000007f0| 65 6e 74 2d 3e 74 68 65 | 56 69 65 77 3b 0d 09 0d |ent->the|View;...|
|00000800| 09 51 33 56 69 65 77 5f | 53 74 61 72 74 42 6f 75 |.Q3View_|StartBou|
|00000810| 6e 64 69 6e 67 42 6f 78 | 28 76 69 65 77 4f 62 6a |ndingBox|(viewObj|
|00000820| 65 63 74 2c 6b 51 33 43 | 6f 6d 70 75 74 65 42 6f |ect,kQ3C|omputeBo|
|00000830| 75 6e 64 73 41 70 70 72 | 6f 78 69 6d 61 74 65 29 |undsAppr|oximate)|
|00000840| 3b 0d 09 64 6f 20 7b 0d | 09 09 73 74 61 74 75 73 |;..do {.|..status|
|00000850| 20 3d 20 51 33 44 69 73 | 70 6c 61 79 47 72 6f 75 | = Q3Dis|playGrou|
|00000860| 70 5f 53 75 62 6d 69 74 | 28 6d 61 69 6e 47 72 6f |p_Submit|(mainGro|
|00000870| 75 70 2c 20 76 69 65 77 | 4f 62 6a 65 63 74 29 3b |up, view|Object);|
|00000880| 0d 09 7d 20 77 68 69 6c | 65 20 28 51 33 56 69 65 |..} whil|e (Q3Vie|
|00000890| 77 5f 45 6e 64 42 6f 75 | 6e 64 69 6e 67 42 6f 78 |w_EndBou|ndingBox|
|000008a0| 28 76 69 65 77 4f 62 6a | 65 63 74 2c 20 76 69 65 |(viewObj|ect, vie|
|000008b0| 77 42 42 6f 78 29 20 3d | 3d 20 6b 51 33 56 69 65 |wBBox) =|= kQ3Vie|
|000008c0| 77 53 74 61 74 75 73 52 | 65 74 72 61 76 65 72 73 |wStatusR|etravers|
|000008d0| 65 29 3b 09 09 09 09 09 | 09 09 09 20 20 20 20 20 |e);.....|... |
|000008e0| 20 20 20 0d 7d 0d 0d 2f | 2f 2d 2d 2d 2d 2d 2d 2d | .}../|/-------|
|000008f0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000900| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000910| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000920| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000930| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000940| 2d 2d 2d 2d 2d 0d 2f 2f | 20 20 47 65 74 20 74 68 |-----.//| Get th|
|00000950| 65 20 43 61 6d 65 72 61 | 20 44 61 74 61 20 28 69 |e Camera| Data (i|
|00000960| 6e 69 74 69 61 6c 69 7a | 65 20 66 6f 72 20 6e 65 |nitializ|e for ne|
|00000970| 77 20 66 69 6c 65 20 61 | 6e 64 20 63 61 6d 65 72 |w file a|nd camer|
|00000980| 61 29 0d 2f 2f 0d 2f 2f | 20 47 65 74 20 74 68 65 |a).//.//| Get the|
|00000990| 20 63 61 6d 65 72 61 20 | 69 6e 66 6f 72 6d 61 74 | camera |informat|
|000009a0| 69 6f 6e 20 66 72 6f 6d | 20 74 68 65 20 63 75 72 |ion from| the cur|
|000009b0| 72 65 6e 74 20 76 69 65 | 77 20 61 6e 64 20 69 6e |rent vie|w and in|
|000009c0| 69 74 69 61 6c 69 7a 65 | 20 74 68 65 0d 2f 2f 20 |itialize| the.// |
|000009d0| 63 61 6d 65 72 61 20 72 | 65 6c 61 74 65 64 20 66 |camera r|elated f|
|000009e0| 69 65 6c 64 73 20 6f 66 | 20 74 68 65 20 64 6f 63 |ields of| the doc|
|000009f0| 75 6d 65 6e 74 20 72 65 | 63 6f 72 64 0d 76 6f 69 |ument re|cord.voi|
|00000a00| 64 20 4d 79 47 65 74 43 | 61 6d 65 72 61 44 61 74 |d MyGetC|ameraDat|
|00000a10| 61 28 44 6f 63 75 6d 65 | 6e 74 50 74 72 20 74 68 |a(Docume|ntPtr th|
|00000a20| 65 44 6f 63 75 6d 65 6e | 74 2c 20 54 51 33 43 61 |eDocumen|t, TQ3Ca|
|00000a30| 6d 65 72 61 4f 62 6a 65 | 63 74 20 74 68 65 43 61 |meraObje|ct theCa|
|00000a40| 6d 65 72 61 29 0d 7b 0d | 09 54 51 33 43 61 6d 65 |mera).{.|.TQ3Came|
|00000a50| 72 61 50 6c 61 63 65 6d | 65 6e 74 09 63 61 6d 65 |raPlacem|ent.came|
|00000a60| 72 61 50 6c 61 63 65 6d | 65 6e 74 3b 0d 0d 09 2f |raPlacem|ent;.../|
|00000a70| 2f 20 47 65 74 20 74 68 | 65 20 63 61 6d 65 72 61 |/ Get th|e camera|
|00000a80| 20 64 61 74 61 2e 0d 09 | 51 33 43 61 6d 65 72 61 | data...|Q3Camera|
|00000a90| 5f 47 65 74 50 6c 61 63 | 65 6d 65 6e 74 28 74 68 |_GetPlac|ement(th|
|00000aa0| 65 43 61 6d 65 72 61 2c | 20 26 63 61 6d 65 72 61 |eCamera,| &camera|
|00000ab0| 50 6c 61 63 65 6d 65 6e | 74 29 3b 0d 0d 09 2f 2f |Placemen|t);...//|
|00000ac0| 20 53 65 74 20 74 68 65 | 20 64 6f 63 75 6d 65 6e | Set the| documen|
|00000ad0| 74 27 73 20 63 61 6d 65 | 72 61 20 64 61 74 61 2e |t's came|ra data.|
|00000ae0| 0d 09 74 68 65 44 6f 63 | 75 6d 65 6e 74 2d 3e 63 |..theDoc|ument->c|
|00000af0| 61 6d 65 72 61 4c 6f 63 | 61 74 69 6f 6e 20 3d 20 |ameraLoc|ation = |
|00000b00| 63 61 6d 65 72 61 50 6c | 61 63 65 6d 65 6e 74 2e |cameraPl|acement.|
|00000b10| 20 63 61 6d 65 72 61 4c | 6f 63 61 74 69 6f 6e 3b | cameraL|ocation;|
|00000b20| 0d 09 74 68 65 44 6f 63 | 75 6d 65 6e 74 2d 3e 70 |..theDoc|ument->p|
|00000b30| 6f 69 6e 74 4f 66 49 6e | 74 65 72 65 73 74 20 3d |ointOfIn|terest =|
|00000b40| 20 63 61 6d 65 72 61 50 | 6c 61 63 65 6d 65 6e 74 | cameraP|lacement|
|00000b50| 2e 20 70 6f 69 6e 74 4f | 66 49 6e 74 65 72 65 73 |. pointO|fInteres|
|00000b60| 74 3b 0d 09 74 68 65 44 | 6f 63 75 6d 65 6e 74 2d |t;..theD|ocument-|
|00000b70| 3e 79 56 65 63 74 6f 72 | 20 3d 20 63 61 6d 65 72 |>yVector| = camer|
|00000b80| 61 50 6c 61 63 65 6d 65 | 6e 74 2e 20 75 70 56 65 |aPlaceme|nt. upVe|
|00000b90| 63 74 6f 72 3b 0d 0d 09 | 2f 2f 20 43 61 6c 63 75 |ctor;...|// Calcu|
|00000ba0| 6c 61 74 65 20 74 68 65 | 20 78 20 61 6e 64 20 7a |late the| x and z|
|00000bb0| 20 76 65 63 74 6f 72 73 | 20 61 6e 64 20 61 73 73 | vectors| and ass|
|00000bc0| 69 67 6e 20 74 68 65 6d | 20 74 6f 20 74 68 65 20 |ign them| to the |
|00000bd0| 64 6f 63 75 6d 65 6e 74 | 2e 0d 09 51 33 50 6f 69 |document|...Q3Poi|
|00000be0| 6e 74 33 44 5f 53 75 62 | 74 72 61 63 74 28 26 74 |nt3D_Sub|tract(&t|
|00000bf0| 68 65 44 6f 63 75 6d 65 | 6e 74 2d 3e 70 6f 69 6e |heDocume|nt->poin|
|00000c00| 74 4f 66 49 6e 74 65 72 | 65 73 74 2c 0d 09 09 26 |tOfInter|est,...&|
|00000c10| 74 68 65 44 6f 63 75 6d | 65 6e 74 2d 3e 63 61 6d |theDocum|ent->cam|
|00000c20| 65 72 61 4c 6f 63 61 74 | 69 6f 6e 2c 20 26 74 68 |eraLocat|ion, &th|
|00000c30| 65 44 6f 63 75 6d 65 6e | 74 2d 3e 7a 56 65 63 74 |eDocumen|t->zVect|
|00000c40| 6f 72 29 3b 0d 09 51 33 | 56 65 63 74 6f 72 33 44 |or);..Q3|Vector3D|
|00000c50| 5f 43 72 6f 73 73 28 26 | 74 68 65 44 6f 63 75 6d |_Cross(&|theDocum|
|00000c60| 65 6e 74 2d 3e 7a 56 65 | 63 74 6f 72 2c 20 26 74 |ent->zVe|ctor, &t|
|00000c70| 68 65 44 6f 63 75 6d 65 | 6e 74 2d 3e 79 56 65 63 |heDocume|nt->yVec|
|00000c80| 74 6f 72 2c 0d 09 09 26 | 74 68 65 44 6f 63 75 6d |tor,...&|theDocum|
|00000c90| 65 6e 74 2d 3e 78 56 65 | 63 74 6f 72 29 3b 0d 7d |ent->xVe|ctor);.}|
|00000ca0| 0d 0d 2f 2f 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |..//----|--------|
|00000cb0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000cc0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000cd0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000ce0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000cf0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000d00| 0d 2f 2f 20 20 53 65 74 | 20 74 68 65 20 43 61 6d |.// Set| the Cam|
|00000d10| 65 72 61 27 61 20 44 61 | 74 61 20 28 77 68 65 6e |era'a Da|ta (when|
|00000d20| 20 6d 6f 76 65 64 29 0d | 2f 2f 0d 2f 2f 20 53 65 | moved).|//.// Se|
|00000d30| 74 20 74 68 65 20 63 61 | 6d 65 72 61 20 6f 66 20 |t the ca|mera of |
|00000d40| 74 68 65 20 63 75 72 72 | 65 6e 74 20 76 69 65 77 |the curr|ent view|
|00000d50| 20 74 6f 20 74 68 65 20 | 76 61 6c 75 65 73 20 69 | to the |values i|
|00000d60| 6e 20 74 68 65 20 64 6f | 63 75 6d 65 6e 74 20 72 |n the do|cument r|
|00000d70| 65 63 6f 72 64 0d 76 6f | 69 64 20 4d 79 53 65 74 |ecord.vo|id MySet|
|00000d80| 43 61 6d 65 72 61 44 61 | 74 61 28 44 6f 63 75 6d |CameraDa|ta(Docum|
|00000d90| 65 6e 74 50 74 72 20 74 | 68 65 44 6f 63 75 6d 65 |entPtr t|heDocume|
|00000da0| 6e 74 2c 20 54 51 33 43 | 61 6d 65 72 61 4f 62 6a |nt, TQ3C|ameraObj|
|00000db0| 65 63 74 20 74 68 65 43 | 61 6d 65 72 61 29 0d 7b |ect theC|amera).{|
|00000dc0| 0d 09 54 51 33 43 61 6d | 65 72 61 50 6c 61 63 65 |..TQ3Cam|eraPlace|
|00000dd0| 6d 65 6e 74 09 63 61 6d | 65 72 61 50 6c 61 63 65 |ment.cam|eraPlace|
|00000de0| 6d 65 6e 74 3b 0d 0d 09 | 2f 2f 20 53 65 74 20 74 |ment;...|// Set t|
|00000df0| 68 65 20 63 61 6d 65 72 | 61 20 70 6c 61 63 65 6d |he camer|a placem|
|00000e00| 65 6e 74 20 64 61 74 61 | 2e 0d 09 63 61 6d 65 72 |ent data|...camer|
|00000e10| 61 50 6c 61 63 65 6d 65 | 6e 74 2e 63 61 6d 65 72 |aPlaceme|nt.camer|
|00000e20| 61 4c 6f 63 61 74 69 6f | 6e 20 3d 20 74 68 65 44 |aLocatio|n = theD|
|00000e30| 6f 63 75 6d 65 6e 74 2d | 3e 63 61 6d 65 72 61 4c |ocument-|>cameraL|
|00000e40| 6f 63 61 74 69 6f 6e 3b | 0d 09 63 61 6d 65 72 61 |ocation;|..camera|
|00000e50| 50 6c 61 63 65 6d 65 6e | 74 2e 70 6f 69 6e 74 4f |Placemen|t.pointO|
|00000e60| 66 49 6e 74 65 72 65 73 | 74 20 3d 20 74 68 65 44 |fInteres|t = theD|
|00000e70| 6f 63 75 6d 65 6e 74 2d | 3e 70 6f 69 6e 74 4f 66 |ocument-|>pointOf|
|00000e80| 49 6e 74 65 72 65 73 74 | 3b 0d 09 63 61 6d 65 72 |Interest|;..camer|
|00000e90| 61 50 6c 61 63 65 6d 65 | 6e 74 2e 75 70 56 65 63 |aPlaceme|nt.upVec|
|00000ea0| 74 6f 72 20 3d 20 74 68 | 65 44 6f 63 75 6d 65 6e |tor = th|eDocumen|
|00000eb0| 74 2d 3e 79 56 65 63 74 | 6f 72 3b 0d 0d 09 2f 2f |t->yVect|or;...//|
|00000ec0| 20 53 65 74 20 74 68 65 | 20 63 61 6d 65 72 61 20 | Set the| camera |
|00000ed0| 64 61 74 61 20 74 6f 20 | 74 68 65 20 63 61 6d 65 |data to |the came|
|00000ee0| 72 61 2e 0d 09 51 33 43 | 61 6d 65 72 61 5f 53 65 |ra...Q3C|amera_Se|
|00000ef0| 74 50 6c 61 63 65 6d 65 | 6e 74 28 74 68 65 43 61 |tPlaceme|nt(theCa|
|00000f00| 6d 65 72 61 2c 20 26 63 | 61 6d 65 72 61 50 6c 61 |mera, &c|ameraPla|
|00000f10| 63 65 6d 65 6e 74 29 3b | 0d 7d 0d 0d 2f 2f 2d 2d |cement);|.}..//--|
|00000f20| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000f30| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000f40| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000f50| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000f60| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000f70| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 0d 2f 2f 20 20 4d |--------|--.// M|
|00000f80| 6f 76 65 20 43 61 6d 65 | 72 61 20 58 0d 2f 2f 0d |ove Came|ra X.//.|
|00000f90| 2f 2f 20 4d 6f 76 65 20 | 74 68 65 20 63 61 6d 65 |// Move |the came|
|00000fa0| 72 61 20 61 6c 6f 6e 67 | 20 74 68 65 20 58 20 61 |ra along| the X a|
|00000fb0| 78 69 73 0d 76 6f 69 64 | 20 4d 79 4d 6f 76 65 43 |xis.void| MyMoveC|
|00000fc0| 61 6d 65 72 61 58 28 44 | 6f 63 75 6d 65 6e 74 50 |ameraX(D|ocumentP|
|00000fd0| 74 72 20 74 68 65 44 6f | 63 75 6d 65 6e 74 2c 20 |tr theDo|cument, |
|00000fe0| 66 6c 6f 61 74 20 64 58 | 29 0d 7b 0d 09 54 51 33 |float dX|).{..TQ3|
|00000ff0| 56 69 65 77 4f 62 6a 65 | 63 74 09 09 74 68 65 56 |ViewObje|ct..theV|
|00001000| 69 65 77 3b 0d 09 54 51 | 33 43 61 6d 65 72 61 4f |iew;..TQ|3CameraO|
|00001010| 62 6a 65 63 74 09 09 74 | 68 65 43 61 6d 65 72 61 |bject..t|heCamera|
|00001020| 3b 0d 09 54 51 33 56 65 | 63 74 6f 72 33 44 09 09 |;..TQ3Ve|ctor3D..|
|00001030| 09 73 63 61 6c 65 64 56 | 65 63 74 6f 72 3b 0d 09 |.scaledV|ector;..|
|00001040| 54 51 33 50 6f 69 6e 74 | 33 44 09 09 09 6e 65 77 |TQ3Point|3D...new|
|00001050| 50 6f 69 6e 74 3b 0d 0d | 09 2f 2f 20 47 65 74 20 |Point;..|.// Get |
|00001060| 74 68 65 20 76 69 65 77 | 20 61 6e 64 20 74 68 65 |the view| and the|
|00001070| 20 63 61 6d 65 72 61 20 | 6f 62 6a 65 63 74 73 2e | camera |objects.|
|00001080| 0d 09 74 68 65 56 69 65 | 77 20 3d 20 74 68 65 44 |..theVie|w = theD|
|00001090| 6f 63 75 6d 65 6e 74 2d | 3e 74 68 65 56 69 65 77 |ocument-|>theView|
|000010a0| 3b 0d 09 51 33 56 69 65 | 77 5f 47 65 74 43 61 6d |;..Q3Vie|w_GetCam|
|000010b0| 65 72 61 28 74 68 65 56 | 69 65 77 2c 20 26 74 68 |era(theV|iew, &th|
|000010c0| 65 43 61 6d 65 72 61 29 | 3b 0d 0d 09 2f 2f 20 53 |eCamera)|;...// S|
|000010d0| 63 61 6c 65 20 74 68 65 | 20 58 20 76 65 63 74 6f |cale the| X vecto|
|000010e0| 72 20 74 6f 20 6d 61 6b | 65 20 69 74 20 64 58 20 |r to mak|e it dX |
|000010f0| 6c 6f 6e 67 65 72 2e 0d | 09 51 33 56 65 63 74 6f |longer..|.Q3Vecto|
|00001100| 72 33 44 5f 53 63 61 6c | 65 28 26 74 68 65 44 6f |r3D_Scal|e(&theDo|
|00001110| 63 75 6d 65 6e 74 2d 3e | 78 56 65 63 74 6f 72 2c |cument->|xVector,|
|00001120| 64 58 2f 51 33 56 65 63 | 74 6f 72 33 44 5f 4c 65 |dX/Q3Vec|tor3D_Le|
|00001130| 6e 67 74 68 28 26 74 68 | 65 44 6f 63 75 6d 65 6e |ngth(&th|eDocumen|
|00001140| 74 2d 3e 78 56 65 63 74 | 6f 72 29 2c 0d 09 09 09 |t->xVect|or),....|
|00001150| 09 09 09 26 73 63 61 6c | 65 64 56 65 63 74 6f 72 |...&scal|edVector|
|00001160| 29 3b 0d 0d 09 2f 2f 20 | 4d 6f 76 65 20 74 68 65 |);...// |Move the|
|00001170| 20 63 61 6d 65 72 61 20 | 70 6f 73 69 74 69 6f 6e | camera |position|
|00001180| 20 61 6e 64 20 64 69 72 | 65 63 74 69 6f 6e 20 62 | and dir|ection b|
|00001190| 79 20 74 68 65 20 6e 65 | 77 20 76 65 63 74 6f 72 |y the ne|w vector|
|000011a0| 2e 0d 09 51 33 50 6f 69 | 6e 74 33 44 5f 56 65 63 |...Q3Poi|nt3D_Vec|
|000011b0| 74 6f 72 33 44 5f 41 64 | 64 28 26 74 68 65 44 6f |tor3D_Ad|d(&theDo|
|000011c0| 63 75 6d 65 6e 74 2d 3e | 63 61 6d 65 72 61 4c 6f |cument->|cameraLo|
|000011d0| 63 61 74 69 6f 6e 2c 26 | 73 63 61 6c 65 64 56 65 |cation,&|scaledVe|
|000011e0| 63 74 6f 72 2c 26 6e 65 | 77 50 6f 69 6e 74 29 3b |ctor,&ne|wPoint);|
|000011f0| 0d 09 74 68 65 44 6f 63 | 75 6d 65 6e 74 2d 3e 63 |..theDoc|ument->c|
|00001200| 61 6d 65 72 61 4c 6f 63 | 61 74 69 6f 6e 20 3d 20 |ameraLoc|ation = |
|00001210| 6e 65 77 50 6f 69 6e 74 | 3b 0d 09 51 33 50 6f 69 |newPoint|;..Q3Poi|
|00001220| 6e 74 33 44 5f 56 65 63 | 74 6f 72 33 44 5f 41 64 |nt3D_Vec|tor3D_Ad|
|00001230| 64 28 26 74 68 65 44 6f | 63 75 6d 65 6e 74 2d 3e |d(&theDo|cument->|
|00001240| 70 6f 69 6e 74 4f 66 49 | 6e 74 65 72 65 73 74 2c |pointOfI|nterest,|
|00001250| 26 73 63 61 6c 65 64 56 | 65 63 74 6f 72 2c 26 6e |&scaledV|ector,&n|
|00001260| 65 77 50 6f 69 6e 74 29 | 3b 0d 09 74 68 65 44 6f |ewPoint)|;..theDo|
|00001270| 63 75 6d 65 6e 74 2d 3e | 70 6f 69 6e 74 4f 66 49 |cument->|pointOfI|
|00001280| 6e 74 65 72 65 73 74 20 | 3d 20 6e 65 77 50 6f 69 |nterest |= newPoi|
|00001290| 6e 74 3b 0d 0d 09 2f 2f | 20 53 65 74 20 74 68 65 |nt;...//| Set the|
|000012a0| 20 75 70 64 61 74 65 64 | 20 63 61 6d 65 72 61 20 | updated| camera |
|000012b0| 64 61 74 61 20 74 6f 20 | 74 68 65 20 63 61 6d 65 |data to |the came|
|000012c0| 72 61 2e 0d 09 4d 79 53 | 65 74 43 61 6d 65 72 61 |ra...MyS|etCamera|
|000012d0| 44 61 74 61 28 74 68 65 | 44 6f 63 75 6d 65 6e 74 |Data(the|Document|
|000012e0| 2c 20 74 68 65 43 61 6d | 65 72 61 29 3b 0d 0d 09 |, theCam|era);...|
|000012f0| 2f 2f 20 55 70 64 61 74 | 65 20 74 68 65 20 76 69 |// Updat|e the vi|
|00001300| 65 77 20 77 69 74 68 20 | 74 68 65 20 63 68 61 6e |ew with |the chan|
|00001310| 67 65 64 20 63 61 6d 65 | 72 61 20 61 6e 64 20 64 |ged came|ra and d|
|00001320| 69 73 70 6f 73 65 20 6f | 66 20 74 68 65 20 63 61 |ispose o|f the ca|
|00001330| 6d 65 72 61 2e 0d 09 51 | 33 56 69 65 77 5f 53 65 |mera...Q|3View_Se|
|00001340| 74 43 61 6d 65 72 61 28 | 74 68 65 56 69 65 77 2c |tCamera(|theView,|
|00001350| 20 74 68 65 43 61 6d 65 | 72 61 29 3b 0d 09 51 33 | theCame|ra);..Q3|
|00001360| 4f 62 6a 65 63 74 5f 44 | 69 73 70 6f 73 65 28 74 |Object_D|ispose(t|
|00001370| 68 65 43 61 6d 65 72 61 | 29 3b 0d 7d 0d 0d 2f 2f |heCamera|);.}..//|
|00001380| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001390| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000013a0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000013b0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000013c0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000013d0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 0d 2f 2f 20 |--------|----.// |
|000013e0| 20 4d 6f 76 65 20 43 61 | 6d 65 72 61 20 59 0d 2f | Move Ca|mera Y./|
|000013f0| 2f 0d 2f 2f 20 4d 6f 76 | 65 20 74 68 65 20 63 61 |/.// Mov|e the ca|
|00001400| 6d 65 72 61 20 61 6c 6f | 6e 67 20 74 68 65 20 59 |mera alo|ng the Y|
|00001410| 20 61 78 69 73 0d 76 6f | 69 64 20 4d 79 4d 6f 76 | axis.vo|id MyMov|
|00001420| 65 43 61 6d 65 72 61 59 | 28 44 6f 63 75 6d 65 6e |eCameraY|(Documen|
|00001430| 74 50 74 72 20 74 68 65 | 44 6f 63 75 6d 65 6e 74 |tPtr the|Document|
|00001440| 2c 20 66 6c 6f 61 74 20 | 64 59 29 0d 7b 0d 09 54 |, float |dY).{..T|
|00001450| 51 33 56 69 65 77 4f 62 | 6a 65 63 74 09 09 74 68 |Q3ViewOb|ject..th|
|00001460| 65 56 69 65 77 3b 0d 09 | 54 51 33 43 61 6d 65 72 |eView;..|TQ3Camer|
|00001470| 61 4f 62 6a 65 63 74 09 | 09 74 68 65 43 61 6d 65 |aObject.|.theCame|
|00001480| 72 61 3b 0d 09 54 51 33 | 56 65 63 74 6f 72 33 44 |ra;..TQ3|Vector3D|
|00001490| 09 09 09 73 63 61 6c 65 | 64 56 65 63 74 6f 72 3b |...scale|dVector;|
|000014a0| 0d 09 54 51 33 50 6f 69 | 6e 74 33 44 09 09 09 6e |..TQ3Poi|nt3D...n|
|000014b0| 65 77 50 6f 69 6e 74 3b | 0d 0d 09 2f 2f 20 47 65 |ewPoint;|...// Ge|
|000014c0| 74 20 74 68 65 20 76 69 | 65 77 20 61 6e 64 20 74 |t the vi|ew and t|
|000014d0| 68 65 20 63 61 6d 65 72 | 61 20 6f 62 6a 65 63 74 |he camer|a object|
|000014e0| 73 2e 0d 09 74 68 65 56 | 69 65 77 20 3d 20 74 68 |s...theV|iew = th|
|000014f0| 65 44 6f 63 75 6d 65 6e | 74 2d 3e 74 68 65 56 69 |eDocumen|t->theVi|
|00001500| 65 77 3b 0d 09 51 33 56 | 69 65 77 5f 47 65 74 43 |ew;..Q3V|iew_GetC|
|00001510| 61 6d 65 72 61 28 74 68 | 65 56 69 65 77 2c 20 26 |amera(th|eView, &|
|00001520| 74 68 65 43 61 6d 65 72 | 61 29 3b 0d 0d 09 2f 2f |theCamer|a);...//|
|00001530| 20 53 63 61 6c 65 20 74 | 68 65 20 59 20 76 65 63 | Scale t|he Y vec|
|00001540| 74 6f 72 20 74 6f 20 6d | 61 6b 65 20 69 74 20 64 |tor to m|ake it d|
|00001550| 59 20 6c 6f 6e 67 65 72 | 2e 0d 09 51 33 56 65 63 |Y longer|...Q3Vec|
|00001560| 74 6f 72 33 44 5f 53 63 | 61 6c 65 28 26 74 68 65 |tor3D_Sc|ale(&the|
|00001570| 44 6f 63 75 6d 65 6e 74 | 2d 3e 79 56 65 63 74 6f |Document|->yVecto|
|00001580| 72 2c 64 59 2f 51 33 56 | 65 63 74 6f 72 33 44 5f |r,dY/Q3V|ector3D_|
|00001590| 4c 65 6e 67 74 68 28 26 | 74 68 65 44 6f 63 75 6d |Length(&|theDocum|
|000015a0| 65 6e 74 2d 3e 79 56 65 | 63 74 6f 72 29 2c 0d 09 |ent->yVe|ctor),..|
|000015b0| 09 09 09 09 09 26 73 63 | 61 6c 65 64 56 65 63 74 |.....&sc|aledVect|
|000015c0| 6f 72 29 3b 0d 0d 09 2f | 2f 20 4d 6f 76 65 20 74 |or);.../|/ Move t|
|000015d0| 68 65 20 63 61 6d 65 72 | 61 20 70 6f 73 69 74 69 |he camer|a positi|
|000015e0| 6f 6e 20 61 6e 64 20 64 | 69 72 65 63 74 69 6f 6e |on and d|irection|
|000015f0| 20 62 79 20 74 68 65 20 | 6e 65 77 20 76 65 63 74 | by the |new vect|
|00001600| 6f 72 2e 0d 09 51 33 50 | 6f 69 6e 74 33 44 5f 56 |or...Q3P|oint3D_V|
|00001610| 65 63 74 6f 72 33 44 5f | 41 64 64 28 26 74 68 65 |ector3D_|Add(&the|
|00001620| 44 6f 63 75 6d 65 6e 74 | 2d 3e 63 61 6d 65 72 61 |Document|->camera|
|00001630| 4c 6f 63 61 74 69 6f 6e | 2c 26 73 63 61 6c 65 64 |Location|,&scaled|
|00001640| 56 65 63 74 6f 72 2c 26 | 6e 65 77 50 6f 69 6e 74 |Vector,&|newPoint|
|00001650| 29 3b 0d 09 74 68 65 44 | 6f 63 75 6d 65 6e 74 2d |);..theD|ocument-|
|00001660| 3e 63 61 6d 65 72 61 4c | 6f 63 61 74 69 6f 6e 20 |>cameraL|ocation |
|00001670| 3d 20 6e 65 77 50 6f 69 | 6e 74 3b 0d 09 51 33 50 |= newPoi|nt;..Q3P|
|00001680| 6f 69 6e 74 33 44 5f 56 | 65 63 74 6f 72 33 44 5f |oint3D_V|ector3D_|
|00001690| 41 64 64 28 26 74 68 65 | 44 6f 63 75 6d 65 6e 74 |Add(&the|Document|
|000016a0| 2d 3e 70 6f 69 6e 74 4f | 66 49 6e 74 65 72 65 73 |->pointO|fInteres|
|000016b0| 74 2c 26 73 63 61 6c 65 | 64 56 65 63 74 6f 72 2c |t,&scale|dVector,|
|000016c0| 26 6e 65 77 50 6f 69 6e | 74 29 3b 0d 09 74 68 65 |&newPoin|t);..the|
|000016d0| 44 6f 63 75 6d 65 6e 74 | 2d 3e 70 6f 69 6e 74 4f |Document|->pointO|
|000016e0| 66 49 6e 74 65 72 65 73 | 74 20 3d 20 6e 65 77 50 |fInteres|t = newP|
|000016f0| 6f 69 6e 74 3b 0d 0d 09 | 2f 2f 20 53 65 74 20 74 |oint;...|// Set t|
|00001700| 68 65 20 75 70 64 61 74 | 65 64 20 63 61 6d 65 72 |he updat|ed camer|
|00001710| 61 20 64 61 74 61 20 74 | 6f 20 74 68 65 20 63 61 |a data t|o the ca|
|00001720| 6d 65 72 61 2e 0d 09 4d | 79 53 65 74 43 61 6d 65 |mera...M|ySetCame|
|00001730| 72 61 44 61 74 61 28 74 | 68 65 44 6f 63 75 6d 65 |raData(t|heDocume|
|00001740| 6e 74 2c 20 74 68 65 43 | 61 6d 65 72 61 29 3b 0d |nt, theC|amera);.|
|00001750| 0d 09 2f 2f 20 55 70 64 | 61 74 65 20 74 68 65 20 |..// Upd|ate the |
|00001760| 76 69 65 77 20 77 69 74 | 68 20 74 68 65 20 63 68 |view wit|h the ch|
|00001770| 61 6e 67 65 64 20 63 61 | 6d 65 72 61 20 61 6e 64 |anged ca|mera and|
|00001780| 20 64 69 73 70 6f 73 65 | 20 6f 66 20 74 68 65 20 | dispose| of the |
|00001790| 63 61 6d 65 72 61 2e 0d | 09 51 33 56 69 65 77 5f |camera..|.Q3View_|
|000017a0| 53 65 74 43 61 6d 65 72 | 61 28 74 68 65 56 69 65 |SetCamer|a(theVie|
|000017b0| 77 2c 20 74 68 65 43 61 | 6d 65 72 61 29 3b 0d 09 |w, theCa|mera);..|
|000017c0| 51 33 4f 62 6a 65 63 74 | 5f 44 69 73 70 6f 73 65 |Q3Object|_Dispose|
|000017d0| 28 74 68 65 43 61 6d 65 | 72 61 29 3b 0d 7d 0d 0d |(theCame|ra);.}..|
|000017e0| 2f 2f 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |//------|--------|
|000017f0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001800| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001810| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001820| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001830| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 0d 2f |--------|------./|
|00001840| 2f 20 20 4d 6f 76 65 20 | 43 61 6d 65 72 61 20 5a |/ Move |Camera Z|
|00001850| 0d 2f 2f 0d 2f 2f 20 4d | 6f 76 65 20 74 68 65 20 |.//.// M|ove the |
|00001860| 63 61 6d 65 72 61 20 61 | 6c 6f 6e 67 20 74 68 65 |camera a|long the|
|00001870| 20 5a 20 61 78 69 73 0d | 76 6f 69 64 20 4d 79 4d | Z axis.|void MyM|
|00001880| 6f 76 65 43 61 6d 65 72 | 61 5a 28 44 6f 63 75 6d |oveCamer|aZ(Docum|
|00001890| 65 6e 74 50 74 72 20 74 | 68 65 44 6f 63 75 6d 65 |entPtr t|heDocume|
|000018a0| 6e 74 2c 20 66 6c 6f 61 | 74 20 64 5a 29 0d 7b 0d |nt, floa|t dZ).{.|
|000018b0| 09 54 51 33 56 69 65 77 | 4f 62 6a 65 63 74 09 09 |.TQ3View|Object..|
|000018c0| 74 68 65 56 69 65 77 3b | 0d 09 54 51 33 43 61 6d |theView;|..TQ3Cam|
|000018d0| 65 72 61 4f 62 6a 65 63 | 74 09 09 74 68 65 43 61 |eraObjec|t..theCa|
|000018e0| 6d 65 72 61 3b 0d 09 54 | 51 33 56 65 63 74 6f 72 |mera;..T|Q3Vector|
|000018f0| 33 44 09 09 09 73 63 61 | 6c 65 64 56 65 63 74 6f |3D...sca|ledVecto|
|00001900| 72 3b 0d 09 54 51 33 50 | 6f 69 6e 74 33 44 09 09 |r;..TQ3P|oint3D..|
|00001910| 09 6e 65 77 50 6f 69 6e | 74 3b 0d 0d 09 2f 2f 20 |.newPoin|t;...// |
|00001920| 47 65 74 20 74 68 65 20 | 76 69 65 77 20 61 6e 64 |Get the |view and|
|00001930| 20 74 68 65 20 63 61 6d | 65 72 61 20 6f 62 6a 65 | the cam|era obje|
|00001940| 63 74 73 2e 0d 09 74 68 | 65 56 69 65 77 20 3d 20 |cts...th|eView = |
|00001950| 74 68 65 44 6f 63 75 6d | 65 6e 74 2d 3e 74 68 65 |theDocum|ent->the|
|00001960| 56 69 65 77 3b 0d 09 51 | 33 56 69 65 77 5f 47 65 |View;..Q|3View_Ge|
|00001970| 74 43 61 6d 65 72 61 28 | 74 68 65 56 69 65 77 2c |tCamera(|theView,|
|00001980| 20 26 74 68 65 43 61 6d | 65 72 61 29 3b 0d 0d 09 | &theCam|era);...|
|00001990| 2f 2f 20 53 63 61 6c 65 | 20 74 68 65 20 5a 20 76 |// Scale| the Z v|
|000019a0| 65 63 74 6f 72 20 74 6f | 20 6d 61 6b 65 20 69 74 |ector to| make it|
|000019b0| 20 64 5a 20 6c 6f 6e 67 | 65 72 2e 0d 09 51 33 56 | dZ long|er...Q3V|
|000019c0| 65 63 74 6f 72 33 44 5f | 53 63 61 6c 65 28 26 74 |ector3D_|Scale(&t|
|000019d0| 68 65 44 6f 63 75 6d 65 | 6e 74 2d 3e 7a 56 65 63 |heDocume|nt->zVec|
|000019e0| 74 6f 72 2c 64 5a 2f 51 | 33 56 65 63 74 6f 72 33 |tor,dZ/Q|3Vector3|
|000019f0| 44 5f 4c 65 6e 67 74 68 | 28 26 74 68 65 44 6f 63 |D_Length|(&theDoc|
|00001a00| 75 6d 65 6e 74 2d 3e 7a | 56 65 63 74 6f 72 29 2c |ument->z|Vector),|
|00001a10| 0d 09 09 09 09 09 09 26 | 73 63 61 6c 65 64 56 65 |.......&|scaledVe|
|00001a20| 63 74 6f 72 29 3b 0d 0d | 09 2f 2f 20 4d 6f 76 65 |ctor);..|.// Move|
|00001a30| 20 74 68 65 20 63 61 6d | 65 72 61 20 70 6f 73 69 | the cam|era posi|
|00001a40| 74 69 6f 6e 20 61 6e 64 | 20 64 69 72 65 63 74 69 |tion and| directi|
|00001a50| 6f 6e 20 62 79 20 74 68 | 65 20 6e 65 77 20 76 65 |on by th|e new ve|
|00001a60| 63 74 6f 72 2e 0d 09 51 | 33 50 6f 69 6e 74 33 44 |ctor...Q|3Point3D|
|00001a70| 5f 56 65 63 74 6f 72 33 | 44 5f 41 64 64 28 26 74 |_Vector3|D_Add(&t|
|00001a80| 68 65 44 6f 63 75 6d 65 | 6e 74 2d 3e 63 61 6d 65 |heDocume|nt->came|
|00001a90| 72 61 4c 6f 63 61 74 69 | 6f 6e 2c 26 73 63 61 6c |raLocati|on,&scal|
|00001aa0| 65 64 56 65 63 74 6f 72 | 2c 26 6e 65 77 50 6f 69 |edVector|,&newPoi|
|00001ab0| 6e 74 29 3b 0d 09 74 68 | 65 44 6f 63 75 6d 65 6e |nt);..th|eDocumen|
|00001ac0| 74 2d 3e 63 61 6d 65 72 | 61 4c 6f 63 61 74 69 6f |t->camer|aLocatio|
|00001ad0| 6e 20 3d 20 6e 65 77 50 | 6f 69 6e 74 3b 0d 09 51 |n = newP|oint;..Q|
|00001ae0| 33 50 6f 69 6e 74 33 44 | 5f 56 65 63 74 6f 72 33 |3Point3D|_Vector3|
|00001af0| 44 5f 41 64 64 28 26 74 | 68 65 44 6f 63 75 6d 65 |D_Add(&t|heDocume|
|00001b00| 6e 74 2d 3e 70 6f 69 6e | 74 4f 66 49 6e 74 65 72 |nt->poin|tOfInter|
|00001b10| 65 73 74 2c 26 73 63 61 | 6c 65 64 56 65 63 74 6f |est,&sca|ledVecto|
|00001b20| 72 2c 26 6e 65 77 50 6f | 69 6e 74 29 3b 0d 09 74 |r,&newPo|int);..t|
|00001b30| 68 65 44 6f 63 75 6d 65 | 6e 74 2d 3e 70 6f 69 6e |heDocume|nt->poin|
|00001b40| 74 4f 66 49 6e 74 65 72 | 65 73 74 20 3d 20 6e 65 |tOfInter|est = ne|
|00001b50| 77 50 6f 69 6e 74 3b 0d | 09 0d 09 2f 2f 20 53 65 |wPoint;.|...// Se|
|00001b60| 74 20 74 68 65 20 75 70 | 64 61 74 65 64 20 63 61 |t the up|dated ca|
|00001b70| 6d 65 72 61 20 64 61 74 | 61 20 74 6f 20 74 68 65 |mera dat|a to the|
|00001b80| 20 63 61 6d 65 72 61 2e | 0d 09 4d 79 53 65 74 43 | camera.|..MySetC|
|00001b90| 61 6d 65 72 61 44 61 74 | 61 28 74 68 65 44 6f 63 |ameraDat|a(theDoc|
|00001ba0| 75 6d 65 6e 74 2c 20 74 | 68 65 43 61 6d 65 72 61 |ument, t|heCamera|
|00001bb0| 29 3b 0d 0d 09 2f 2f 20 | 55 70 64 61 74 65 20 74 |);...// |Update t|
|00001bc0| 68 65 20 76 69 65 77 20 | 77 69 74 68 20 74 68 65 |he view |with the|
|00001bd0| 20 63 68 61 6e 67 65 64 | 20 63 61 6d 65 72 61 20 | changed| camera |
|00001be0| 61 6e 64 20 64 69 73 70 | 6f 73 65 20 6f 66 20 74 |and disp|ose of t|
|00001bf0| 68 65 20 63 61 6d 65 72 | 61 2e 0d 09 51 33 56 69 |he camer|a...Q3Vi|
|00001c00| 65 77 5f 53 65 74 43 61 | 6d 65 72 61 28 74 68 65 |ew_SetCa|mera(the|
|00001c10| 56 69 65 77 2c 20 74 68 | 65 43 61 6d 65 72 61 29 |View, th|eCamera)|
|00001c20| 3b 0d 09 51 33 4f 62 6a | 65 63 74 5f 44 69 73 70 |;..Q3Obj|ect_Disp|
|00001c30| 6f 73 65 28 74 68 65 43 | 61 6d 65 72 61 29 3b 0d |ose(theC|amera);.|
|00001c40| 7d 0d 0d 2f 2f 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |}..//---|--------|
|00001c50| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001c60| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001c70| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001c80| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001c90| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001ca0| 2d 0d 2f 2f 20 20 52 6f | 74 61 74 65 20 43 61 6d |-.// Ro|tate Cam|
|00001cb0| 65 72 61 20 58 0d 2f 2f | 0d 2f 2f 20 52 6f 74 61 |era X.//|.// Rota|
|00001cc0| 74 65 20 74 68 65 20 63 | 61 6d 65 72 61 20 61 62 |te the c|amera ab|
|00001cd0| 6f 75 74 20 74 68 65 20 | 58 20 61 78 69 73 0d 76 |out the |X axis.v|
|00001ce0| 6f 69 64 20 4d 79 52 6f | 74 61 74 65 43 61 6d 65 |oid MyRo|tateCame|
|00001cf0| 72 61 58 28 44 6f 63 75 | 6d 65 6e 74 50 74 72 20 |raX(Docu|mentPtr |
|00001d00| 74 68 65 44 6f 63 75 6d | 65 6e 74 2c 20 66 6c 6f |theDocum|ent, flo|
|00001d10| 61 74 20 64 58 29 0d 7b | 0d 09 54 51 33 56 69 65 |at dX).{|..TQ3Vie|
|00001d20| 77 4f 62 6a 65 63 74 09 | 09 74 68 65 56 69 65 77 |wObject.|.theView|
|00001d30| 3b 0d 09 54 51 33 43 61 | 6d 65 72 61 4f 62 6a 65 |;..TQ3Ca|meraObje|
|00001d40| 63 74 09 09 74 68 65 43 | 61 6d 65 72 61 3b 0d 09 |ct..theC|amera;..|
|00001d50| 54 51 33 56 65 63 74 6f | 72 33 44 09 09 09 72 6f |TQ3Vecto|r3D...ro|
|00001d60| 74 61 74 65 64 56 65 63 | 74 6f 72 3b 0d 09 54 51 |tatedVec|tor;..TQ|
|00001d70| 33 4d 61 74 72 69 78 34 | 78 34 09 09 72 6f 74 61 |3Matrix4|x4..rota|
|00001d80| 74 69 6f 6e 4d 61 74 72 | 69 78 3b 0d 0d 09 2f 2f |tionMatr|ix;...//|
|00001d90| 20 47 65 74 20 74 68 65 | 20 76 69 65 77 20 61 6e | Get the| view an|
|00001da0| 64 20 74 68 65 20 63 61 | 6d 65 72 61 20 6f 62 6a |d the ca|mera obj|
|00001db0| 65 63 74 73 2e 0d 09 74 | 68 65 56 69 65 77 20 3d |ects...t|heView =|
|00001dc0| 20 74 68 65 44 6f 63 75 | 6d 65 6e 74 2d 3e 74 68 | theDocu|ment->th|
|00001dd0| 65 56 69 65 77 3b 0d 09 | 51 33 56 69 65 77 5f 47 |eView;..|Q3View_G|
|00001de0| 65 74 43 61 6d 65 72 61 | 28 74 68 65 56 69 65 77 |etCamera|(theView|
|00001df0| 2c 20 26 74 68 65 43 61 | 6d 65 72 61 29 3b 0d 0d |, &theCa|mera);..|
|00001e00| 09 2f 2f 20 43 72 65 61 | 74 65 20 74 68 65 20 72 |.// Crea|te the r|
|00001e10| 6f 74 61 74 69 6f 6e 20 | 6d 61 74 72 69 78 20 66 |otation |matrix f|
|00001e20| 6f 72 20 72 6f 74 61 74 | 69 6e 67 20 61 62 6f 75 |or rotat|ing abou|
|00001e30| 74 20 74 68 65 20 78 20 | 61 78 69 73 2e 0d 09 51 |t the x |axis...Q|
|00001e40| 33 4d 61 74 72 69 78 34 | 78 34 5f 53 65 74 52 6f |3Matrix4|x4_SetRo|
|00001e50| 74 61 74 65 41 62 6f 75 | 74 41 78 69 73 28 26 72 |tateAbou|tAxis(&r|
|00001e60| 6f 74 61 74 69 6f 6e 4d | 61 74 72 69 78 2c 0d 09 |otationM|atrix,..|
|00001e70| 09 26 74 68 65 44 6f 63 | 75 6d 65 6e 74 2d 3e 63 |.&theDoc|ument->c|
|00001e80| 61 6d 65 72 61 4c 6f 63 | 61 74 69 6f 6e 2c 20 26 |ameraLoc|ation, &|
|00001e90| 74 68 65 44 6f 63 75 6d | 65 6e 74 2d 3e 78 56 65 |theDocum|ent->xVe|
|00001ea0| 63 74 6f 72 2c 20 64 58 | 29 3b 0d 0d 09 2f 2f 20 |ctor, dX|);...// |
|00001eb0| 52 6f 74 61 74 65 20 74 | 68 65 20 79 20 76 65 63 |Rotate t|he y vec|
|00001ec0| 74 6f 72 20 28 75 70 20 | 76 65 63 74 6f 72 29 20 |tor (up |vector) |
|00001ed0| 61 62 6f 75 74 20 74 68 | 65 20 78 20 61 78 69 73 |about th|e x axis|
|00001ee0| 2e 0d 09 51 33 56 65 63 | 74 6f 72 33 44 5f 54 72 |...Q3Vec|tor3D_Tr|
|00001ef0| 61 6e 73 66 6f 72 6d 28 | 26 74 68 65 44 6f 63 75 |ansform(|&theDocu|
|00001f00| 6d 65 6e 74 2d 3e 79 56 | 65 63 74 6f 72 2c 20 26 |ment->yV|ector, &|
|00001f10| 72 6f 74 61 74 69 6f 6e | 4d 61 74 72 69 78 2c 0d |rotation|Matrix,.|
|00001f20| 09 09 26 72 6f 74 61 74 | 65 64 56 65 63 74 6f 72 |..&rotat|edVector|
|00001f30| 29 3b 0d 09 74 68 65 44 | 6f 63 75 6d 65 6e 74 2d |);..theD|ocument-|
|00001f40| 3e 79 56 65 63 74 6f 72 | 20 3d 20 72 6f 74 61 74 |>yVector| = rotat|
|00001f50| 65 64 56 65 63 74 6f 72 | 3b 0d 0d 09 2f 2f 20 52 |edVector|;...// R|
|00001f60| 6f 74 61 74 65 20 74 68 | 65 20 7a 20 76 65 63 74 |otate th|e z vect|
|00001f70| 6f 72 20 61 62 6f 75 74 | 20 74 68 65 20 78 20 61 |or about| the x a|
|00001f80| 78 69 73 2e 0d 09 51 33 | 56 65 63 74 6f 72 33 44 |xis...Q3|Vector3D|
|00001f90| 5f 54 72 61 6e 73 66 6f | 72 6d 28 26 74 68 65 44 |_Transfo|rm(&theD|
|00001fa0| 6f 63 75 6d 65 6e 74 2d | 3e 7a 56 65 63 74 6f 72 |ocument-|>zVector|
|00001fb0| 2c 20 26 72 6f 74 61 74 | 69 6f 6e 4d 61 74 72 69 |, &rotat|ionMatri|
|00001fc0| 78 2c 0d 09 09 26 72 6f | 74 61 74 65 64 56 65 63 |x,...&ro|tatedVec|
|00001fd0| 74 6f 72 29 3b 0d 09 74 | 68 65 44 6f 63 75 6d 65 |tor);..t|heDocume|
|00001fe0| 6e 74 2d 3e 7a 56 65 63 | 74 6f 72 20 3d 20 72 6f |nt->zVec|tor = ro|
|00001ff0| 74 61 74 65 64 56 65 63 | 74 6f 72 3b 0d 0d 09 2f |tatedVec|tor;.../|
|00002000| 2f 20 55 70 64 61 74 65 | 20 74 68 65 20 70 6f 69 |/ Update| the poi|
|00002010| 6e 74 20 6f 66 20 69 6e | 74 65 72 65 73 74 20 66 |nt of in|terest f|
|00002020| 72 6f 6d 20 74 68 65 20 | 6e 65 77 20 7a 20 76 65 |rom the |new z ve|
|00002030| 63 74 6f 72 2e 0d 09 51 | 33 50 6f 69 6e 74 33 44 |ctor...Q|3Point3D|
|00002040| 5f 56 65 63 74 6f 72 33 | 44 5f 41 64 64 28 26 74 |_Vector3|D_Add(&t|
|00002050| 68 65 44 6f 63 75 6d 65 | 6e 74 2d 3e 63 61 6d 65 |heDocume|nt->came|
|00002060| 72 61 4c 6f 63 61 74 69 | 6f 6e 2c 0d 09 09 26 74 |raLocati|on,...&t|
|00002070| 68 65 44 6f 63 75 6d 65 | 6e 74 2d 3e 7a 56 65 63 |heDocume|nt->zVec|
|00002080| 74 6f 72 2c 20 26 74 68 | 65 44 6f 63 75 6d 65 6e |tor, &th|eDocumen|
|00002090| 74 2d 3e 70 6f 69 6e 74 | 4f 66 49 6e 74 65 72 65 |t->point|OfIntere|
|000020a0| 73 74 29 3b 0d 0d 09 2f | 2f 20 53 65 74 20 74 68 |st);.../|/ Set th|
|000020b0| 65 20 75 70 64 61 74 65 | 64 20 63 61 6d 65 72 61 |e update|d camera|
|000020c0| 20 64 61 74 61 20 74 6f | 20 74 68 65 20 63 61 6d | data to| the cam|
|000020d0| 65 72 61 2e 0d 09 4d 79 | 53 65 74 43 61 6d 65 72 |era...My|SetCamer|
|000020e0| 61 44 61 74 61 28 74 68 | 65 44 6f 63 75 6d 65 6e |aData(th|eDocumen|
|000020f0| 74 2c 20 74 68 65 43 61 | 6d 65 72 61 29 3b 0d 0d |t, theCa|mera);..|
|00002100| 09 2f 2f 20 55 70 64 61 | 74 65 20 74 68 65 20 76 |.// Upda|te the v|
|00002110| 69 65 77 20 77 69 74 68 | 20 74 68 65 20 63 68 61 |iew with| the cha|
|00002120| 6e 67 65 64 20 63 61 6d | 65 72 61 20 61 6e 64 20 |nged cam|era and |
|00002130| 64 69 73 70 6f 73 65 20 | 6f 66 20 74 68 65 20 63 |dispose |of the c|
|00002140| 61 6d 65 72 61 2e 0d 09 | 51 33 56 69 65 77 5f 53 |amera...|Q3View_S|
|00002150| 65 74 43 61 6d 65 72 61 | 28 74 68 65 56 69 65 77 |etCamera|(theView|
|00002160| 2c 20 74 68 65 43 61 6d | 65 72 61 29 3b 0d 09 51 |, theCam|era);..Q|
|00002170| 33 4f 62 6a 65 63 74 5f | 44 69 73 70 6f 73 65 28 |3Object_|Dispose(|
|00002180| 74 68 65 43 61 6d 65 72 | 61 29 3b 0d 7d 0d 0d 2f |theCamer|a);.}../|
|00002190| 2f 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |/-------|--------|
|000021a0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000021b0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000021c0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000021d0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000021e0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 0d 2f 2f |--------|-----.//|
|000021f0| 20 20 52 6f 74 61 74 65 | 20 43 61 6d 65 72 61 20 | Rotate| Camera |
|00002200| 59 0d 2f 2f 0d 2f 2f 20 | 52 6f 74 61 74 65 20 74 |Y.//.// |Rotate t|
|00002210| 68 65 20 63 61 6d 65 72 | 61 20 61 62 6f 75 74 20 |he camer|a about |
|00002220| 74 68 65 20 59 20 61 78 | 69 73 0d 76 6f 69 64 20 |the Y ax|is.void |
|00002230| 4d 79 52 6f 74 61 74 65 | 43 61 6d 65 72 61 59 28 |MyRotate|CameraY(|
|00002240| 44 6f 63 75 6d 65 6e 74 | 50 74 72 20 74 68 65 44 |Document|Ptr theD|
|00002250| 6f 63 75 6d 65 6e 74 2c | 20 66 6c 6f 61 74 20 64 |ocument,| float d|
|00002260| 59 29 0d 7b 0d 09 54 51 | 33 56 69 65 77 4f 62 6a |Y).{..TQ|3ViewObj|
|00002270| 65 63 74 09 09 74 68 65 | 56 69 65 77 3b 0d 09 54 |ect..the|View;..T|
|00002280| 51 33 43 61 6d 65 72 61 | 4f 62 6a 65 63 74 09 09 |Q3Camera|Object..|
|00002290| 74 68 65 43 61 6d 65 72 | 61 3b 0d 09 54 51 33 56 |theCamer|a;..TQ3V|
|000022a0| 65 63 74 6f 72 33 44 09 | 09 09 72 6f 74 61 74 65 |ector3D.|..rotate|
|000022b0| 64 56 65 63 74 6f 72 3b | 0d 09 54 51 33 4d 61 74 |dVector;|..TQ3Mat|
|000022c0| 72 69 78 34 78 34 09 09 | 72 6f 74 61 74 69 6f 6e |rix4x4..|rotation|
|000022d0| 4d 61 74 72 69 78 3b 0d | 0d 09 2f 2f 20 47 65 74 |Matrix;.|..// Get|
|000022e0| 20 74 68 65 20 76 69 65 | 77 20 61 6e 64 20 74 68 | the vie|w and th|
|000022f0| 65 20 63 61 6d 65 72 61 | 20 6f 62 6a 65 63 74 73 |e camera| objects|
|00002300| 2e 0d 09 74 68 65 56 69 | 65 77 20 3d 20 74 68 65 |...theVi|ew = the|
|00002310| 44 6f 63 75 6d 65 6e 74 | 2d 3e 74 68 65 56 69 65 |Document|->theVie|
|00002320| 77 3b 0d 09 51 33 56 69 | 65 77 5f 47 65 74 43 61 |w;..Q3Vi|ew_GetCa|
|00002330| 6d 65 72 61 28 74 68 65 | 56 69 65 77 2c 20 26 74 |mera(the|View, &t|
|00002340| 68 65 43 61 6d 65 72 61 | 29 3b 0d 0d 09 2f 2f 20 |heCamera|);...// |
|00002350| 43 72 65 61 74 65 20 74 | 68 65 20 72 6f 74 61 74 |Create t|he rotat|
|00002360| 69 6f 6e 20 6d 61 74 72 | 69 78 20 66 6f 72 20 72 |ion matr|ix for r|
|00002370| 6f 74 61 74 69 6e 67 20 | 61 62 6f 75 74 20 74 68 |otating |about th|
|00002380| 65 20 79 20 61 78 69 73 | 2e 0d 09 51 33 4d 61 74 |e y axis|...Q3Mat|
|00002390| 72 69 78 34 78 34 5f 53 | 65 74 52 6f 74 61 74 65 |rix4x4_S|etRotate|
|000023a0| 41 62 6f 75 74 41 78 69 | 73 28 26 72 6f 74 61 74 |AboutAxi|s(&rotat|
|000023b0| 69 6f 6e 4d 61 74 72 69 | 78 2c 0d 09 09 26 74 68 |ionMatri|x,...&th|
|000023c0| 65 44 6f 63 75 6d 65 6e | 74 2d 3e 63 61 6d 65 72 |eDocumen|t->camer|
|000023d0| 61 4c 6f 63 61 74 69 6f | 6e 2c 20 26 74 68 65 44 |aLocatio|n, &theD|
|000023e0| 6f 63 75 6d 65 6e 74 2d | 3e 79 56 65 63 74 6f 72 |ocument-|>yVector|
|000023f0| 2c 20 64 59 29 3b 0d 0d | 09 2f 2f 20 52 6f 74 61 |, dY);..|.// Rota|
|00002400| 74 65 20 74 68 65 20 7a | 20 76 65 63 74 6f 72 20 |te the z| vector |
|00002410| 61 62 6f 75 74 20 74 68 | 65 20 79 20 61 78 69 73 |about th|e y axis|
|00002420| 2e 0d 09 51 33 56 65 63 | 74 6f 72 33 44 5f 54 72 |...Q3Vec|tor3D_Tr|
|00002430| 61 6e 73 66 6f 72 6d 28 | 26 74 68 65 44 6f 63 75 |ansform(|&theDocu|
|00002440| 6d 65 6e 74 2d 3e 7a 56 | 65 63 74 6f 72 2c 20 26 |ment->zV|ector, &|
|00002450| 72 6f 74 61 74 69 6f 6e | 4d 61 74 72 69 78 2c 0d |rotation|Matrix,.|
|00002460| 09 09 26 72 6f 74 61 74 | 65 64 56 65 63 74 6f 72 |..&rotat|edVector|
|00002470| 29 3b 0d 09 74 68 65 44 | 6f 63 75 6d 65 6e 74 2d |);..theD|ocument-|
|00002480| 3e 7a 56 65 63 74 6f 72 | 20 3d 20 72 6f 74 61 74 |>zVector| = rotat|
|00002490| 65 64 56 65 63 74 6f 72 | 3b 0d 0d 09 2f 2f 20 52 |edVector|;...// R|
|000024a0| 6f 74 61 74 65 20 74 68 | 65 20 78 20 76 65 63 74 |otate th|e x vect|
|000024b0| 6f 72 20 61 62 6f 75 74 | 20 74 68 65 20 79 20 61 |or about| the y a|
|000024c0| 78 69 73 2e 0d 09 51 33 | 56 65 63 74 6f 72 33 44 |xis...Q3|Vector3D|
|000024d0| 5f 54 72 61 6e 73 66 6f | 72 6d 28 26 74 68 65 44 |_Transfo|rm(&theD|
|000024e0| 6f 63 75 6d 65 6e 74 2d | 3e 78 56 65 63 74 6f 72 |ocument-|>xVector|
|000024f0| 2c 20 26 72 6f 74 61 74 | 69 6f 6e 4d 61 74 72 69 |, &rotat|ionMatri|
|00002500| 78 2c 0d 09 09 26 72 6f | 74 61 74 65 64 56 65 63 |x,...&ro|tatedVec|
|00002510| 74 6f 72 29 3b 0d 09 74 | 68 65 44 6f 63 75 6d 65 |tor);..t|heDocume|
|00002520| 6e 74 2d 3e 78 56 65 63 | 74 6f 72 20 3d 20 72 6f |nt->xVec|tor = ro|
|00002530| 74 61 74 65 64 56 65 63 | 74 6f 72 3b 0d 0d 09 2f |tatedVec|tor;.../|
|00002540| 2f 20 55 70 64 61 74 65 | 20 74 68 65 20 70 6f 69 |/ Update| the poi|
|00002550| 6e 74 20 6f 66 20 69 6e | 74 65 72 65 73 74 20 66 |nt of in|terest f|
|00002560| 72 6f 6d 20 74 68 65 20 | 6e 65 77 20 7a 20 76 65 |rom the |new z ve|
|00002570| 63 74 6f 72 2e 0d 09 51 | 33 50 6f 69 6e 74 33 44 |ctor...Q|3Point3D|
|00002580| 5f 56 65 63 74 6f 72 33 | 44 5f 41 64 64 28 26 74 |_Vector3|D_Add(&t|
|00002590| 68 65 44 6f 63 75 6d 65 | 6e 74 2d 3e 63 61 6d 65 |heDocume|nt->came|
|000025a0| 72 61 4c 6f 63 61 74 69 | 6f 6e 2c 0d 09 09 26 74 |raLocati|on,...&t|
|000025b0| 68 65 44 6f 63 75 6d 65 | 6e 74 2d 3e 7a 56 65 63 |heDocume|nt->zVec|
|000025c0| 74 6f 72 2c 20 26 74 68 | 65 44 6f 63 75 6d 65 6e |tor, &th|eDocumen|
|000025d0| 74 2d 3e 70 6f 69 6e 74 | 4f 66 49 6e 74 65 72 65 |t->point|OfIntere|
|000025e0| 73 74 29 3b 0d 0d 09 2f | 2f 20 53 65 74 20 74 68 |st);.../|/ Set th|
|000025f0| 65 20 75 70 64 61 74 65 | 64 20 63 61 6d 65 72 61 |e update|d camera|
|00002600| 20 64 61 74 61 20 74 6f | 20 74 68 65 20 63 61 6d | data to| the cam|
|00002610| 65 72 61 2e 0d 09 4d 79 | 53 65 74 43 61 6d 65 72 |era...My|SetCamer|
|00002620| 61 44 61 74 61 28 74 68 | 65 44 6f 63 75 6d 65 6e |aData(th|eDocumen|
|00002630| 74 2c 20 74 68 65 43 61 | 6d 65 72 61 29 3b 0d 0d |t, theCa|mera);..|
|00002640| 09 2f 2f 20 55 70 64 61 | 74 65 20 74 68 65 20 76 |.// Upda|te the v|
|00002650| 69 65 77 20 77 69 74 68 | 20 74 68 65 20 63 68 61 |iew with| the cha|
|00002660| 6e 67 65 64 20 63 61 6d | 65 72 61 20 61 6e 64 20 |nged cam|era and |
|00002670| 64 69 73 70 6f 73 65 20 | 6f 66 20 74 68 65 20 63 |dispose |of the c|
|00002680| 61 6d 65 72 61 2e 0d 09 | 51 33 56 69 65 77 5f 53 |amera...|Q3View_S|
|00002690| 65 74 43 61 6d 65 72 61 | 28 74 68 65 56 69 65 77 |etCamera|(theView|
|000026a0| 2c 20 74 68 65 43 61 6d | 65 72 61 29 3b 0d 09 51 |, theCam|era);..Q|
|000026b0| 33 4f 62 6a 65 63 74 5f | 44 69 73 70 6f 73 65 28 |3Object_|Dispose(|
|000026c0| 74 68 65 43 61 6d 65 72 | 61 29 3b 0d 7d 0d 0d 2f |theCamer|a);.}../|
|000026d0| 2f 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |/-------|--------|
|000026e0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000026f0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002700| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002710| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002720| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 0d 2f 2f |--------|-----.//|
|00002730| 20 20 52 6f 74 61 74 65 | 20 43 61 6d 65 72 61 20 | Rotate| Camera |
|00002740| 5a 0d 2f 2f 0d 2f 2f 20 | 52 6f 74 61 74 65 20 74 |Z.//.// |Rotate t|
|00002750| 68 65 20 63 61 6d 65 72 | 61 20 61 62 6f 75 74 20 |he camer|a about |
|00002760| 74 68 65 20 5a 20 61 78 | 69 73 0d 76 6f 69 64 20 |the Z ax|is.void |
|00002770| 4d 79 52 6f 74 61 74 65 | 43 61 6d 65 72 61 5a 28 |MyRotate|CameraZ(|
|00002780| 44 6f 63 75 6d 65 6e 74 | 50 74 72 20 74 68 65 44 |Document|Ptr theD|
|00002790| 6f 63 75 6d 65 6e 74 2c | 20 66 6c 6f 61 74 20 64 |ocument,| float d|
|000027a0| 5a 29 0d 7b 0d 09 54 51 | 33 56 69 65 77 4f 62 6a |Z).{..TQ|3ViewObj|
|000027b0| 65 63 74 09 09 74 68 65 | 56 69 65 77 3b 0d 09 54 |ect..the|View;..T|
|000027c0| 51 33 43 61 6d 65 72 61 | 4f 62 6a 65 63 74 09 09 |Q3Camera|Object..|
|000027d0| 74 68 65 43 61 6d 65 72 | 61 3b 0d 09 54 51 33 56 |theCamer|a;..TQ3V|
|000027e0| 65 63 74 6f 72 33 44 09 | 09 09 72 6f 74 61 74 65 |ector3D.|..rotate|
|000027f0| 64 56 65 63 74 6f 72 3b | 0d 09 54 51 33 4d 61 74 |dVector;|..TQ3Mat|
|00002800| 72 69 78 34 78 34 09 09 | 72 6f 74 61 74 69 6f 6e |rix4x4..|rotation|
|00002810| 4d 61 74 72 69 78 3b 0d | 0d 09 2f 2f 20 47 65 74 |Matrix;.|..// Get|
|00002820| 20 74 68 65 20 76 69 65 | 77 20 61 6e 64 20 74 68 | the vie|w and th|
|00002830| 65 20 63 61 6d 65 72 61 | 20 6f 62 6a 65 63 74 73 |e camera| objects|
|00002840| 2e 0d 09 74 68 65 56 69 | 65 77 20 3d 20 74 68 65 |...theVi|ew = the|
|00002850| 44 6f 63 75 6d 65 6e 74 | 2d 3e 74 68 65 56 69 65 |Document|->theVie|
|00002860| 77 3b 0d 09 51 33 56 69 | 65 77 5f 47 65 74 43 61 |w;..Q3Vi|ew_GetCa|
|00002870| 6d 65 72 61 28 74 68 65 | 56 69 65 77 2c 20 26 74 |mera(the|View, &t|
|00002880| 68 65 43 61 6d 65 72 61 | 29 3b 0d 0d 09 2f 2f 20 |heCamera|);...// |
|00002890| 43 72 65 61 74 65 20 74 | 68 65 20 72 6f 74 61 74 |Create t|he rotat|
|000028a0| 69 6f 6e 20 6d 61 74 72 | 69 78 20 66 6f 72 20 72 |ion matr|ix for r|
|000028b0| 6f 74 61 74 69 6e 67 20 | 61 62 6f 75 74 20 74 68 |otating |about th|
|000028c0| 65 20 7a 20 61 78 69 73 | 2e 0d 09 51 33 4d 61 74 |e z axis|...Q3Mat|
|000028d0| 72 69 78 34 78 34 5f 53 | 65 74 52 6f 74 61 74 65 |rix4x4_S|etRotate|
|000028e0| 41 62 6f 75 74 41 78 69 | 73 28 26 72 6f 74 61 74 |AboutAxi|s(&rotat|
|000028f0| 69 6f 6e 4d 61 74 72 69 | 78 2c 0d 09 09 26 74 68 |ionMatri|x,...&th|
|00002900| 65 44 6f 63 75 6d 65 6e | 74 2d 3e 63 61 6d 65 72 |eDocumen|t->camer|
|00002910| 61 4c 6f 63 61 74 69 6f | 6e 2c 20 26 74 68 65 44 |aLocatio|n, &theD|
|00002920| 6f 63 75 6d 65 6e 74 2d | 3e 7a 56 65 63 74 6f 72 |ocument-|>zVector|
|00002930| 2c 20 64 5a 29 3b 0d 0d | 09 2f 2f 20 52 6f 74 61 |, dZ);..|.// Rota|
|00002940| 74 65 20 74 68 65 20 79 | 20 76 65 63 74 6f 72 20 |te the y| vector |
|00002950| 28 75 70 20 76 65 63 74 | 6f 72 29 20 61 62 6f 75 |(up vect|or) abou|
|00002960| 74 20 74 68 65 20 7a 20 | 61 78 69 73 2e 0d 09 51 |t the z |axis...Q|
|00002970| 33 56 65 63 74 6f 72 33 | 44 5f 54 72 61 6e 73 66 |3Vector3|D_Transf|
|00002980| 6f 72 6d 28 26 74 68 65 | 44 6f 63 75 6d 65 6e 74 |orm(&the|Document|
|00002990| 2d 3e 79 56 65 63 74 6f | 72 2c 20 26 72 6f 74 61 |->yVecto|r, &rota|
|000029a0| 74 69 6f 6e 4d 61 74 72 | 69 78 2c 0d 09 09 26 72 |tionMatr|ix,...&r|
|000029b0| 6f 74 61 74 65 64 56 65 | 63 74 6f 72 29 3b 0d 09 |otatedVe|ctor);..|
|000029c0| 74 68 65 44 6f 63 75 6d | 65 6e 74 2d 3e 79 56 65 |theDocum|ent->yVe|
|000029d0| 63 74 6f 72 20 3d 20 72 | 6f 74 61 74 65 64 56 65 |ctor = r|otatedVe|
|000029e0| 63 74 6f 72 3b 0d 0d 09 | 2f 2f 20 52 6f 74 61 74 |ctor;...|// Rotat|
|000029f0| 65 20 74 68 65 20 78 20 | 76 65 63 74 6f 72 20 61 |e the x |vector a|
|00002a00| 62 6f 75 74 20 74 68 65 | 20 7a 20 61 78 69 73 2e |bout the| z axis.|
|00002a10| 0d 09 51 33 56 65 63 74 | 6f 72 33 44 5f 54 72 61 |..Q3Vect|or3D_Tra|
|00002a20| 6e 73 66 6f 72 6d 28 26 | 74 68 65 44 6f 63 75 6d |nsform(&|theDocum|
|00002a30| 65 6e 74 2d 3e 78 56 65 | 63 74 6f 72 2c 20 26 72 |ent->xVe|ctor, &r|
|00002a40| 6f 74 61 74 69 6f 6e 4d | 61 74 72 69 78 2c 0d 09 |otationM|atrix,..|
|00002a50| 09 26 72 6f 74 61 74 65 | 64 56 65 63 74 6f 72 29 |.&rotate|dVector)|
|00002a60| 3b 0d 09 74 68 65 44 6f | 63 75 6d 65 6e 74 2d 3e |;..theDo|cument->|
|00002a70| 78 56 65 63 74 6f 72 20 | 3d 20 72 6f 74 61 74 65 |xVector |= rotate|
|00002a80| 64 56 65 63 74 6f 72 3b | 0d 0d 09 2f 2f 20 53 65 |dVector;|...// Se|
|00002a90| 74 20 74 68 65 20 75 70 | 64 61 74 65 64 20 63 61 |t the up|dated ca|
|00002aa0| 6d 65 72 61 20 64 61 74 | 61 20 74 6f 20 74 68 65 |mera dat|a to the|
|00002ab0| 20 63 61 6d 65 72 61 2e | 0d 09 4d 79 53 65 74 43 | camera.|..MySetC|
|00002ac0| 61 6d 65 72 61 44 61 74 | 61 28 74 68 65 44 6f 63 |ameraDat|a(theDoc|
|00002ad0| 75 6d 65 6e 74 2c 20 74 | 68 65 43 61 6d 65 72 61 |ument, t|heCamera|
|00002ae0| 29 3b 0d 0d 09 2f 2f 20 | 55 70 64 61 74 65 20 74 |);...// |Update t|
|00002af0| 68 65 20 76 69 65 77 20 | 77 69 74 68 20 74 68 65 |he view |with the|
|00002b00| 20 63 68 61 6e 67 65 64 | 20 63 61 6d 65 72 61 20 | changed| camera |
|00002b10| 61 6e 64 20 64 69 73 70 | 6f 73 65 20 6f 66 20 74 |and disp|ose of t|
|00002b20| 68 65 20 63 61 6d 65 72 | 61 2e 0d 09 51 33 56 69 |he camer|a...Q3Vi|
|00002b30| 65 77 5f 53 65 74 43 61 | 6d 65 72 61 28 74 68 65 |ew_SetCa|mera(the|
|00002b40| 56 69 65 77 2c 20 74 68 | 65 43 61 6d 65 72 61 29 |View, th|eCamera)|
|00002b50| 3b 0d 09 51 33 4f 62 6a | 65 63 74 5f 44 69 73 70 |;..Q3Obj|ect_Disp|
|00002b60| 6f 73 65 28 74 68 65 43 | 61 6d 65 72 61 29 3b 0d |ose(theC|amera);.|
|00002b70| 7d 0d 0d 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |}.......|........|
|00002b80| 00 00 01 00 00 00 01 54 | 00 00 00 54 00 00 00 46 |.......T|...T...F|
|00002b90| 6d 69 73 63 63 64 65 76 | 05 00 00 00 00 00 00 00 |misccdev|........|
|00002ba0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00002bb0| 08 63 61 6d 65 72 61 2e | 63 6d 02 00 00 00 54 45 |.camera.|cm....TE|
|00002bc0| 58 54 4d 50 43 43 01 00 | ff ff ff ff 00 00 00 00 |XTMPCC..|........|
|00002bd0| 00 00 54 45 58 54 4d 50 | 43 43 01 00 ff ff ff ff |..TEXTMP|CC......|
|00002be0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00002bf0| 00 00 ab a8 54 b7 00 00 | 2a f3 00 00 01 9a 00 00 |....T...|*.......|
|00002c00| 00 00 00 00 00 00 00 00 | 00 00 00 61 25 01 75 66 |........|...a%.uf|
|00002c10| 6f 78 49 4e 49 54 01 00 | 00 00 00 00 00 00 00 00 |oxINIT..|........|
|00002c20| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00002c30| 00 00 00 00 01 21 25 02 | 41 4f 53 31 ff ff 00 00 |.....!%.|AOS1....|
|00002c40| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00002c50| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 0e |........|........|
|00002c60| 25 02 4d 53 49 54 ff ff | 00 00 00 00 00 00 00 00 |%.MSIT..|........|
|00002c70| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00002c80| 00 00 00 48 00 09 4d 6f | 6e 61 63 6f 00 00 00 00 |...H..Mo|naco....|
|00002c90| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00002ca0| 00 00 00 00 00 00 00 03 | 00 04 00 57 00 82 03 63 |........|...W...c|
|00002cb0| 02 ea 00 57 00 82 03 63 | 02 ea ad fb 67 f6 00 00 |...W...c|....g...|
|00002cc0| 02 81 00 00 02 81 00 00 | 00 00 01 00 00 00 00 04 |........|........|
|00002cd0| 00 01 00 01 00 00 01 00 | 00 00 01 54 00 00 00 54 |........|...T...T|
|00002ce0| 00 00 00 46 03 31 1f 34 | 21 ca 00 00 00 1c 00 46 |...F.1.4|!......F|
|00002cf0| 00 01 4d 50 53 52 00 00 | 00 12 4d 57 42 42 00 00 |..MPSR..|..MWBB..|
|00002d00| 00 1e 03 ed ff ff 00 00 | 00 00 00 00 00 00 03 f0 |........|........|
|00002d10| ff ff 00 00 00 4c 00 00 | 00 00 00 00 00 00 00 00 |.....L..|........|
|00002d20| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00002d30| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00002d40| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00002d50| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00002d60| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00002d70| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
+--------+-------------------------+-------------------------+--------+--------+